﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Devart.Data.PostgreSql;
using System.Data;

namespace Sistema_financiero.Control
{
    public static class Fecha_dia_habil
    {
        
        public static DateTime Obtener_fecha_habil_30_dias(DateTime Fecha)
        {
            List<DateTime> Lista_feriados = new List<DateTime>();
            bool salir;
            salir = false;
            Fecha = Fecha.AddDays(30);

            Lista_feriados = Obtener_feriados();
            

            while (salir ==false)
            {
                if (Fecha.DayOfWeek == DayOfWeek.Sunday)
                {
                    Fecha = Fecha.AddDays(1);
                }
                else
                {
                    salir = true;
                    foreach (DateTime F in Lista_feriados)
                    {
                        if (F.Date.ToString("d") == Fecha.Date.ToString("d"))
                        {
                            Fecha = Fecha.AddDays(1);
                            salir = false;
                            break;
                        }
                    }
                }
            }
            return Fecha;
        }

        public static List<DateTime> Obtener_feriados()
        {
            List<DateTime> lista = new List<DateTime>();
            using (PgSqlConnection conexion = new PgSqlConnection(frm_Menu.conexion))
            {
                conexion.Unicode = true;
                conexion.Open();
                string sql = String.Format("SELECT * FROM \"Feriado\"");
                PgSqlCommand comando = new PgSqlCommand(sql, conexion);
                PgSqlDataReader reader = comando.ExecuteReader();
                while (reader.Read())
                {
                    lista.Add(Cargar_Feriado(reader));
                }
                conexion.Close();
            }
            return lista;

        }
        private static DateTime Cargar_Feriado(IDataReader reader)
        {
            DateTime item = new DateTime();
            item = Convert.ToDateTime(reader[0]);
            return item;
        }
    }
}
